台灣是如何選拔國手的呢?台灣的資訊奧林匹亞 (簡稱 TOI) 除了邀請全國學科能力競賽資訊科決賽獲得一、二等獎的同學 (總共 10 位) 以外,另外也會舉辦初選,錄取大約 20 位左右的學生進入選訓營。而兩個階段的選訓營總共有四次模擬考,最後根據四次模擬考的成績決定最終的國手名單。
圖片按照這篇繪製。
兩個階段的選訓營各自有兩週,通常會在兩週的週末舉行模擬考。這幾年的考試已經全面使用 IOI 官方也使用的比賽管理系統 CMS (Contest Management System, CMS) 了,相當先進。想當年高二參加選訓營的時候,每一題只有 7 筆測試資料,評分的時候是助教抱著一大疊 2.5 吋磁片,然後一張一張插入電腦的 A 槽,並讓我們從命令提示字元執行編譯好的程式讀取磁片內的輸入,然後讀秒等待輸出。輸出後再跟助教手上的答案紙進行比對,如果輸出正確就能拿到分數。高三的時候,測試資料檔案變大了,所以從磁片改成使用光碟讀取輸入。運氣比較差的同學就會剛好遇到光碟挑片,導致程式讀取輸入的時間變得異常久,差點被誤判成 TLE (超過執行時間限制)。
CMS 系統可以在數分鐘內回饋給選手們即時評分的結果,當年則是賽後留在座位上等待助教逐一到你的座位上評分,兩種模式應該都滿刺激的。選訓營是一個知識成長極為快速的過程,除了會有教授上課以外,更珍貴的是同儕之間的互相切磋砥礪 (謎之聲:當然還有各種比方說魔法氣泡、蟲蟲大戰、音遊和鬥塔之類的切磋)。以往的我們,到了選訓營才會知道,一山還有一山高。再難的題目,考完以後你都能驚喜地發現存在一個旁邊的同學拿到超高的分數。據說曾經有一年,有位同學憑著第一場模擬考的成績就足以抵過其他同學四場模擬考加起來的成績。
當然,時代不同了,現在有 Codeforces,這個網站匯集了來自世界各地厲害的程式解題菁英,上面舉辦了大量的比賽,還有積分制度,讓大家能看得出自己在國際上的實力。十五年前的我,經過選訓營和當上國手的洗禮後,曾經開心地以為『我知道演算法是什麼了』。現在回想起來,當時的自信真的是不知道從哪裡來的...
今天的小謎題是一道古老的北市賽題目 (年份忘記...)『纜車配對問題』。題目敘述是這樣的:有 2N 個人要搭乘纜車到山頂上滑雪。每一輛纜車只能乘坐 2 個人,因此他們決定乘坐恰好 N 輛纜車上山。給定他們每個人的體重 w[1], w[2], …, w[2N],請問在最佳配對的方案下,最重的那輛纜車的總承重為何呢?